/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelos;

import general.conectarBD;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;


public class modelo_ordenes extends conectarBD{
    String id_producto,nombre,id_orden,id_ordenes_productos;
    float total;
    int cantidad;

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public String getId_orden() {
        return id_orden;
    }

    public void setId_orden(String id_orden) {
        this.id_orden = id_orden;
    }

    public String getId_ordenes_productos() {
        return id_ordenes_productos;
    }

    public void setId_ordenes_productos(String id_ordenes_productos) {
        this.id_ordenes_productos = id_ordenes_productos;
    }

    public String getId_producto() {
        return id_producto;
    }

    public void setId_producto(String id_producto) {
        this.id_producto = id_producto;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

    public Connection getCon() {
        return con;
    }

    public void setCon(Connection con) {
        this.con = con;
    }

    public String getConneccionString() {
        return conneccionString;
    }

    public void setConneccionString(String conneccionString) {
        this.conneccionString = conneccionString;
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public ResultSet getRs() {
        return rs;
    }

    public void setRs(ResultSet rs) {
        this.rs = rs;
    }

    public Statement getStmt() {
        return stmt;
    }

    public void setStmt(Statement stmt) {
        this.stmt = stmt;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public boolean registrar(String nombre,float total,ArrayList<modelo_productos> lista_productos,ArrayList<modelo_ingredientes> lista_ingredientes)
    {
            String sqlAutoincremento1 = "SELECT COUNT(DISTINCT id_orden) FROM t_ordenes";
            id_orden= String.valueOf(autoIncremento(sqlAutoincremento1));
            conectar();// base de datos
            String sql = " insert into t_ordenes (id_orden,nombre_cliente,total_general) values ('"+id_orden+"','"+nombre+"',"+total+")";
            accionSql(sql);
            desconectar();

            for (int i = 0; i < lista_productos.size(); i++) {
                System.out.print("entro" + i);
                String sqlAutoincremento2 = "SELECT COUNT(DISTINCT id_ordenes_productos) FROM t_productos_orden";
                id_ordenes_productos= String.valueOf(autoIncremento(sqlAutoincremento2));
                conectar();// base de datos
                System.out.print("en la tira sql");
                System.out.print(lista_ingredientes.get(i).getStock());
                System.out.print(lista_productos.get(i).getId());
                String sql2= "insert into t_productos_orden(id_ordenes_productos,stock_prod_ord,id_productos,id_orden) values ('"+id_ordenes_productos+"',"+lista_ingredientes.get(i).getStock()+",'"+lista_productos.get(i).getId()+"','"+id_orden+"')";
                System.out.print(sql2);
                accionSql(sql2);
                desconectar();
            }
            return true;
    }


    public ArrayList<modelo_ordenes> lista(){
    ArrayList<modelo_ordenes> lista_ordenes = new ArrayList<modelo_ordenes>();
    String sql="select * from t_ordenes";
    conectar();
    accionSql(sql);
    try{

        while (rs.next()){
            modelo_ordenes  m_ord = new modelo_ordenes();
            m_ord.setId_orden(rs.getString("id_orden"));
            m_ord.setNombre(rs.getString("nombre_cliente"));
            m_ord.setTotal(rs.getInt("total_general"));
            lista_ordenes.add(m_ord);
         }
    } catch (SQLException ex) {
        Logger.getLogger(modelo_ordenes.class.getName()).log(Level.SEVERE, null, ex);
    }
    return lista_ordenes;
    }

    public ArrayList<modelo_listado_productos> listado(){
    ArrayList<modelo_listado_productos> listado_ordenes = new ArrayList<modelo_listado_productos>();
    String sql="SELECT id_producto,nombre_producto,listado_ventas.cantidad_ventas,(precio_producto*listado_ventas.cantidad_ventas) as precio_ventas  FROM t_productos, (SELECT sum(t_productos_orden.stock_prod_ord) as cantidad_ventas,t_productos_orden.id_productos AS codigo_ventas FROM t_productos_orden GROUP BY t_productos_orden.id_productos) listado_ventas WHERE listado_ventas.codigo_ventas=id_producto";
    conectar();
    accionSql(sql);
    try{
        while (rs.next()){
            modelo_listado_productos  listado = new modelo_listado_productos();
            listado.setCantidad_producto(Float.parseFloat(rs.getString("cantidad_ventas")));
            listado.setNombre_producto(rs.getString("nombre_producto"));
            listado.setPrecio_orden(Float.parseFloat(rs.getString("precio_ventas")));
            listado_ordenes.add(listado);
         }
    } catch (SQLException ex) {
        Logger.getLogger(modelo_listado_productos.class.getName()).log(Level.SEVERE, null, ex);
    }
    return listado_ordenes;
    }
    
        public int autoIncremento (String sql)
    {
        int ID=1;
        try {
            conectar(); // base de datos
            accionSql(sql);
            while (rs.next()) {
             ID =rs.getInt(1)+1;
            }
            return ID;
        } catch (SQLException ex) {
            Logger.getLogger(modelo_ordenes.class.getName()).log(Level.SEVERE, null, ex);
            return ID;
        }
    }


}
